#ifndef range_traits_HPP__
#define range_traits_HPP__

template <typename Range>
struct range_value_type
{
	typedef typename Range::value_type type;
};

template <typename Range>
struct range_category
{
	typedef typename Range::range_category type;
};


//TODO: Template Specialization for pointers...


template <typename T>
using ElementType = typename range_value_type<T>::type;

#endif // range_traits_HPP__